写在最前面
11月末和这个12月都在折腾flask,想的是能够用web框架去从后端写一个网站出来,当中学习积累的时间有点多,我又不怎么喜欢学到哪儿写到哪儿,所以就慢慢写好了。应该会分成几个系列写。
这篇主要讲的是flask 开发环境的搭建,算是我这一路上遇到的问题什么的。涉及了:
- Python 3 环境的搭建
- virtualenv配置
- mysql 命令行和配置
- 完全卸载homebrew 和 下载 homebrew的命令行
Python3 环境的搭建
因为想的是寒假能写一个生产级别的flask应用,所以这次的开发部署的是Python 3的开发环境。
先是确保你已经下了Python3,没有的可以使用 brew install Python3
可能出现的情况是,你的brew会很长时间的卡在 brew update这边,你翻个墙再搞就好了。
这时候你在terminal键入Python
,会出现Python 2.7的环境。键入Python3
,会出现Python 3.5的环境。
我有想过说把我的Mac全局Python环境改成Python3的,但我stackoverflow的结果是,那样会让我系统本身一些基于Python 2.7的应用不好,可以的解决方法是输入alias Python=Python3
。这样的话,你再输入Python,当前情况下的Python环境就改成Python3了。
虚拟环境的搭建
命令行cd你的项目文件夹,使用pip install virtualenv
。
键入virtualenv -p Python3 envname
,这时候你的虚拟环境就调到Python3的环境下了。
命令行键入source envname/bin/activate
。这时候你就会发现你进入了你的虚拟环境了。
MySQL的搭建
那本<flask web开发>书上用的数据库是sqlite,我想实际应用中的开发应该还是MySQL之类的。所以这边介绍的是MySQL。
brew install MySQL
,当然也可以去官网下载。
官网下载的那个,在系统便好那边会有个开关,开启和关闭MySQL服务,用brew下载的话,可以用命令行brew services start mysql
打开服务,用brew services stop mysql
关闭MySQL服务。我查了一下,开着也不会耗太多内存,所以开不开随便了。
启动服务以后,terminal里输入mysql -u root -p
,发现报错。看报错信息显示的是,mysql现在还在tmp中,没有加入环境变量。依次执行unset TMPDIR
,`bash mysql_install_db --verbose --user=root
--basedir="$(brew --prefix mysql)"--datadir=/usr/local/var/mysql --tmpdir=/tmp。当更改到环境变量后,
mysql -u root -p` 会发现就可以了。
设置密码的命令行是SET PASSWORD FOR 'yourname'@'localhost' = 'auth_string'
。
再提一下当你忘记MySQL密码时的操作,因为我这样的老是忘记密码。ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'
。
MySQL的常用命令行有两个觉得可以提一下,一个是flush privileges;
刷新,另一个是杀进程,先show processlist
,再kill pid
。
目前我觉得值得记的就是这些了。其他的还是看文档去学习了。
brew的下载和完全删除命令行
这个是我发现我把我brew搞得乱七八糟时的想重新下载时找的一些能work的命令行,值得记录一下。
下载ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
之后把brew移动到环境变量。echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile
删除操作花了我点时间翻github issue找到的一个彻底的。ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)”
最后的话
大概就是这些了,是我最近想要记下来的一些命令行什么的,下次再配置自己也找得到。操作系统时OS X,嗯,下一篇应该是一篇关于flask login 模块的东西。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。